//package com.inspur.edp.cef.generator.coreGenerator.base.entitygen.resourceinfo;
//
//import com.inspur.edp.caf.generator.baseInfo.ParameterInfo;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.cef.core.i18n.I18nResourceUtil;
//import com.inspur.edp.cef.rtgenerator.repositorygen.RepositoryGenUtil;
//import com.inspur.edp.cef.rtgenerator.utils.I18nGenUtil;
//import java.util.ArrayList;
//import lombok.var;
//import org.eclipse.jdt.core.dom.AST;
//import org.eclipse.jdt.core.dom.Block;
//import org.eclipse.jdt.core.dom.Modifier;
//import org.eclipse.jdt.core.dom.ReturnStatement;
//import org.eclipse.jdt.core.dom.Statement;
//import org.eclipse.jdt.core.dom.StringLiteral;
//import org.eclipse.jdt.core.dom.SwitchCase;
//import org.eclipse.jdt.core.dom.SwitchStatement;
//
//public class GetAssoRefPropDisplayNameMethodGen extends ClassMethodGenerator {
//
//  private static final String FormalParName_propName = "propName";
//  private static final String FormalParName_refPropName = "refPropName";
//  private DataTypeResInfoGenCtx ParentContext;
//
//  public GetAssoRefPropDisplayNameMethodGen(DataTypeResInfoGenCtx parentContext) {
//    this.ParentContext = parentContext;
//
//  }
//
//  @Override
//  protected boolean getIsOverride() {
//    return true;
//  }
//
//  @Override
//  protected String getMethodName() {
//    return "getAssoRefPropertyDisplay";
//  }
//
//  @Override
//  protected TypeInfo getReturnType() {
//    return new TypeInfo(String.class);
//  }
//
//  @Override
//  protected ArrayList<Modifier.ModifierKeyword> getAccessModifiers() {
//    return RepositoryGenUtil.createModifierKeywordArray(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
//  }
//
//  @Override
//  protected ArrayList<ParameterInfo> getParameterCollection() {
//    return new ArrayList<ParameterInfo>(java.util.Arrays.asList(new ParameterInfo[]{
//        RepositoryGenUtil.createParameterInfo(String.class, FormalParName_propName),
//        RepositoryGenUtil.createParameterInfo(String.class, FormalParName_refPropName)}));
//  }
//

//  ///#region methodBody
////        方法1-模型显示值
////		public override string GetPropertyDispalyName(string propName)
////		{
////			switch (propName)
////			{
////                //枚举
////				case "key1":
////					switch (enumKey)
////					{
////						case "enumKey1":
////							return GetResourceValue("enumValue1");
////						case "enumKey2":
////							return GetResourceValue("enumValue1");
////						default:
////							throw new Exception("无效枚举");
////					}
////				case "key2":
////                    //非枚举
////					throw new Exception("当前属性不是枚举类型");
////				default:
////					throw new Exception($"无效属性名{propName}");
////			}
////		}
//  @Override
//  protected Block buildMethodBody() {
//
//    SwitchStatement switchStatement = ast.newSwitchStatement();
//    switchStatement.setExpression(ast.newSimpleName(FormalParName_propName));
//    ParentContext.getPropInfos().entrySet().stream().forEach(item -> {
//      if ((ParentContext.getPropInfos().get(item.getKey())).getIsAssociation()) {
//        switchStatement.statements().add(createCaseStatement(item.getKey()));
//        switchStatement.statements().add(buildPropStatement(item.getKey()));
//      }
//    });
//    addImport(I18nResourceUtil.class.getTypeName());
//    /**
//     * throw new RuntimeException("XXXXXXX"+prop);
//     */
//    I18nGenUtil.getDefaultSection(ast, switchStatement, "无效的属性名称", FormalParName_refPropName);
//    Block block = ast.newBlock();
//    block.statements().add(switchStatement);
//    return block;
//  }
//
//  private Statement buildPropStatement(String propName) {
//    var refPropInfo = ParentContext.getPropInfos().get(propName);
//    SwitchStatement switchStatement = ast.newSwitchStatement();
//    switchStatement.setExpression(ast.newSimpleName(FormalParName_refPropName));
//    ParentContext.getPropRefPropInfos().get(propName).entrySet().stream().forEach(item -> {
//      switchStatement.statements().addAll(createReturnStatement(ast, item.getKey(), propName));
//    });
//
//    I18nGenUtil.getDefaultSection(ast, switchStatement, "无效的关联带出属性", FormalParName_refPropName);
//    return switchStatement;
//  }
//
//
//  /**
//   * case enumKey: return new XXXInfo();
//   *
//   * @return
//   */
//  private ArrayList<Statement> createReturnStatement(AST ast, String enumKey, String propName) {
//    var refPropInfo = ParentContext.getPropRefPropInfos().get(propName);
//    ArrayList<Statement> list = new ArrayList<>();
//    list.add(createCaseStatement(enumKey));
//    var resourceKey = ParentContext.getPropRefPropInfos().get(propName).get(enumKey)
//        .getDisplayValueKey();
//    ReturnStatement returnStatement = ParentContext.
//        getParentContext().
//        getProjContext().
//        getModelResInfoGenContex().
//        BuildgetResourceItemValueReturn(ast, resourceKey);
//    list.add(returnStatement);
//    return list;
//  }
//
//  private Statement createCaseStatement(String enumKey) {
//    SwitchCase switchCase1 = ast.newSwitchCase();
//    StringLiteral stringLiteral = ast.newStringLiteral();
//    stringLiteral.setLiteralValue(enumKey);
//    switchCase1.setExpression(stringLiteral);
//    return switchCase1;
//  }
//}